ngxtop-nginx监控
条评论nginx的接入日志,是一份巨大的宝库,通过监控,分析日志,可以掌握系统的运载情况,甚至可以分析用户行为。
想到日志的监控,分析,最容易想到tail,awk这样的命令,但实际操作中,刷刷流过的日志信息,似乎也不会让你有什么头绪。
ngxtop 简介
ngxtop 类似于linux的 top 命令,设计为在短时间内运行,作为服务器的故障排除和监控使用
ngxtop 使用python2编写和测试,但也可以支持python3,使用sqlite 数据库
ngxtop 安装
ngxtop使用python编写, 所以可以使用pip命令进行安装,确保机器上已经安装好了python环境和pip
sudo pip install ngxtop
- 注意:
安装成功,但执行ngxtop
时,报这种错误:
ImportError: No module named _curses
是因为 ngxtop
可执行命令未安装到 /usr/bin/下,而是/usr/local/bin/,所以建议安装时,加上 sudo
ngxtop 命令简介
用法:
ngxtop [options]
ngxtop [options] (print|top|avg|sum) <var> ...
ngxtop info
ngxtop [options] query <query> ...
参数选项说明
- -l
或–access-log 日志的路径 - -f
或–log-format 设置日志格式,默认格式combined,另外一种较常用格式为common - –no-follow 处理历史的日志
- -t
或 –interval 刷新频率,默认2秒 - -g 或 –group-by 按变量分组,默认显示 request_path
- -w 或 –having
筛选 [default: 1] - -o 或 –order-by 输出的排序方式,默认: 访问数
- -n
或 –limit 显示top多条,默认前top 10条 - -a
…或 –a … 对输出字段做处理,可选 sum, avg, min, max - -v或 –verbose 详细输出
- -d或 –debug debug模式,输出每行及记录
- -h或 –help 显示帮助详细
- –version 显示版本信息
高级选项
- -c
或 –config 指定nginx配置文件,自动分析日志格式 - -i
或 –filter 只处理符合规则的记录 - -p
或 –pre-filter in-filter expression to check in pre-parsing phase.
另外一些变量可以在分析时用到,名字含义同日志格式里的设置:remote_addr、remote_user、time_local、request、request_path、status、body_bytes_sent、http_referer、http_user_agent。
使用示例:
列出10个nginx服务器,按请求数量排序
ngxtop
显示前20个最频繁的请求
ngxtop -n 20
获取nginx基本信息
ngxtop info
以自定义显示的变量,简单列出需要显示的变量。使用 “print” 命令显示自定义请求。
ngxtop print request http_user_agent remote_addr
显示请求最多的客户端IP地址
ngxtop top remote_addr
显示状态码是404的请求
ngxtop -i 'status == 404' print request status
统计访问次数最多的请求
ngxtop -l access.log --no-follow
自定义排序的字段
ngxtop -l access.log --no-follow -o avg_bytes_sent
自定义过滤条件
只统计成功 ngxtop -l access.log --no-follow -i 'status!=200'
输出400以上状态吗的请求以及请求来源
ngxtop -i ‘status >= 400’ print request status http_referer
搜索客户端为 iPhone 的 log
ngxtop -l access.log --no-follow -i 'http_user_agent.find('iPhone')' 条件里是可以嵌 python 语句的,这些语句被 eval() 动态翻译并执行。需要注意的是这些语句如果抛出异常会导致 ngxtop 异常退出。
分组过滤
-g 相当于 group by, -a 相当于 having。 ngxtop 已经默认提供了 avg_bytes_sent, 2xx, 3xx, 4xx, 5xx 这些聚合字段,一般这些字段已经足够了。 如果业务复杂了,想做出更多的查询,可以利用这两个参数自己组合条件。 访问量前十的ip地址 ngxtop --group-by remote_addr
除了Nginx,ngtop 还可以处理其他的日志文件,比如还可以监控apache日志,如:
使用普通格式从远程服务器解析apache日志
ssh user@remote_server tail -f /var/log/apache2/access.log | ngxtop -f common
更多内容请参见 :
另外再推荐一个可以生成统计报表,输出为html,cvs等文件的分析统计 :
让人过于舒服的路,都是下坡路;最不费力气的行走,都是顺风走。然而,动物园里养不出千里马,水井里也生不出腾飞的巨龙。你最终变成什么样,很大程度上取决于你在人生道路上,是选择迎风奔跑,还是就坡下驴。努力这个词太平凡,但努力将使你的人生不平庸。